using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using CapaAccesoDatos;
using CapaAccesoDatos.Clases;

namespace CapaNegocios
{
    /// <summary>
    /// Exepcion que se arroja cuando un usuario intenta cancelar una reservacion
    /// cuando ya se ha alcanzado el limite de tiempo para poder hacerlo.
    /// </summary>
    internal class TimeLimitReachedException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase TimeLimitReachedException.
        /// </summary>
        internal TimeLimitReachedException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase TimeLimitReachedException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal TimeLimitReachedException(string Message) : base(Message) { }
    }
    /// <summary>
    /// Exepcion que se arroja cuando un usuario no activo se intenta logear.
    /// </summary>
    internal class NotActiveException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase NotActiveException.
        /// </summary>
        internal NotActiveException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase NotActiveException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal NotActiveException(string Message) : base(Message) { }
    }
    /// <summary>
    /// Exepcion que se arroja cuando un usuario bloqueado se intenta logear.
    /// </summary>
    internal class BlockedException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase BlockedException.
        /// </summary>
        internal BlockedException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase BlockedException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal BlockedException(string Message) : base(Message) { }
    }
    /// <summary>
    /// Exepcion que se arroja cuando se intenta "insertar" (Save) en la base de datos
    /// un objeto que no es nuevo. [No utilizada]
    /// </summary>
    internal class NotNewException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase NotNewException.
        /// </summary>
        internal NotNewException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase NotNewException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal NotNewException(string Message) : base(Message) { }
    }
    /// <summary>
    /// Exepcion que se arroja cuando se intenta reservar y no hay disponibilidad en el laboratorio.
    /// </summary>
    internal class LabIsFullException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase LabIsFullException.
        /// </summary>
        internal LabIsFullException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase LabIsFullException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal LabIsFullException(string Message) : base(Message) { }
    }
    /// <summary>
    /// Exepcion que se arroja cuando se busca un usuario que no existe en la bse de datos.
    /// </summary>
    internal class NotExistingUserException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase NotExistingUserException.
        /// </summary>
        internal NotExistingUserException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase NotExistingUserException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal NotExistingUserException(string Message) : base(Message) { }
    }
    /// <summary>
    /// Excepcion que se arroja cuando el ussuario intenta reservar en un horario que ya tiene reservado.
    /// </summary>
    internal class TimeAlreadyReservedException : ApplicationException
    {
        /// <summary>
        /// Inicializa una nueva instancia de la clase TimeAlreadyReservedException.
        /// </summary>
        internal TimeAlreadyReservedException() : base() { }
        /// <summary>
        /// Inicializa una nueva instancia de la clase TimeAlreadyReservedException.
        /// </summary>
        /// <param name="Message">Mensaje que describe el error.</param>
        internal TimeAlreadyReservedException(string Message) : base(Message) { }
    }    

}
